home *** CD-ROM | disk | FTP | other *** search
/ 3D GFX / 3D GFX.iso / pcutils / windows / genesis / readme.1st < prev   
Text File  |  1995-12-30  |  26KB  |  502 lines

  1. Welcome to Genesis beta v1.0   (c) Silicon Dream Ltd. 1995
  2.  
  3. It is important that you read at least the QUICK START section of this
  4. document before unzipping and running Genesis. I apologise for the poor
  5. format of the user documentation (yes, its what your reading now) and
  6. my spelling. The programmer documentation is far more proffessional
  7. and is included in the genvxx.zip file in both Microsoft Word format
  8. and plain text.
  9.  
  10. Contents of this document:
  11.  
  12.        A BRIEF RUNDOWN
  13.        PC REQUIREMENTS
  14.        QUICK START
  15.        THE USER GUIDE
  16.          THE VIEW
  17.          THE 3D CURSOR
  18.          CHANGING VIEWPOINT
  19.          SURFACE DIALOG
  20.          TOOLS
  21.            Sphere tool
  22.            Patch tool
  23.            Spin tools
  24.            Diff, Union and Int tools
  25.            Enclosed tool
  26.            Coordinate system editor
  27.            Normal tool
  28.        ROYALTIES ON API USEAGE
  29.        DEVELOPERS NOTE
  30.  
  31. If you have any questions, queries, praises or verbal abuse then I am
  32. your primary and only point of contact;
  33.  
  34. Name:         Steven Woodman (otheriwse known as Spike)
  35. Org:          Silicon Dream Ltd.
  36. Email:        spike@silicond.demon.co.uk
  37. Smail-mail:   Flat 1 Chine view, 5 Mckinley rd, Westbourne,
  38.               Bournemouth, Dorset, UK, BH4 8AG
  39. Tel:          ...ooooh - could be a bad idea
  40. Updates from: - The SimTel20 windows software repository
  41.               - UK's Demon ftp server
  42.               - The Raytech bulletin board on UK tel; 01862 832020
  43.               - Me
  44.  
  45. Those of you who followed my original append in the
  46. comp.graphics.algorithms and comp.graphics.raytracing newsgroups will
  47. already be familiar with what Genesis is. To those who didn't here's
  48. a brief rundown;
  49.  
  50. A BRIEF RUNDOWN
  51.  
  52. Genesis is a new windows based 3D toolkit with a comprehensive set
  53. of programming interfaces. The editor application supplied as part of
  54. Genesis is intended to allow easy and intuitive editing of 3D objects,
  55. textures, lights and animations. My design goal was to try and build
  56. something like a 2D drawing program, BUT IN 3D! The API can be used for
  57. writing 3D applications independent of the editor. On the other hand if
  58. you are interested in writing a 'tool' to do a 3D type job, for instance,
  59. say you want to write some code to take one 3D object and 'bend' it
  60. around another, then the way to do it is to write a 'tool' that plugs
  61. into the editor. The various API's provide you with an excellent platform
  62. to start your work, one in which most of the hard stuff is already done
  63. for you. The Geometry engine is also replaceable meaning Genesis could
  64. support BRender, Glint chips, Windows 3D GDI, Open GL, Renderware,
  65. Playstation, Rendermorphics engine and Intel 3DR to name but a few.
  66.  
  67. PC REQUIREMENTS
  68.  
  69. You need;
  70.  
  71.     * At least a 386 PC WITH a maths copro (or 486DX). Contact
  72.         author for details of non-copro version
  73.     * 4 Megs RAM although 8 is recomended
  74.     * About 3 megs free on hard disk
  75.     * Window 3.x
  76.     * A good graphics card.
  77.  
  78. The faster your graphics card the better. Also if your card supports true
  79. colour (either 16 bit or 24 bit), this will give better results than an
  80. 8 bit colour card. Check your card is in true color mode if it has one.
  81.  
  82. QUICK START
  83.  
  84. To get straight into the Genesis editor, do the following;
  85.  
  86. Make a directory you want to install it in, eg;
  87.  
  88.     md gen
  89.  
  90. copy the gen.zip file in, eg;
  91.  
  92.     cd gen
  93.     copy \gen.zip
  94.  
  95. unzip this file with the -d and -o options;
  96.  
  97.     unzip -d -o gen.zip
  98.  
  99. this will give create you a directory structure containing all of the
  100. Genesis executable files, plus the programmers toolkit and the
  101. documentation needed to start programming.
  102.  
  103. Start windows (if not already) and create an icon using the windows program
  104. manager's File/Properties menu item. Both the program directory and the
  105. working directory must be set to;
  106.  
  107.     \gen\bin
  108.  
  109. or whatever you have called your directory. Copy the Gened.ini file to
  110. the main windows directory, eg;
  111.  
  112.     copy \gen\bin\gened.ini \windows
  113.  
  114. NOW RUN GENESIS FROM THE PROGRAM MANAGER ICON! Alternatively you could just
  115. run it from the Program managers File/Run menu item.
  116.  
  117. The version of Genesis you have is a Freeware copy. Feel free
  118. to play with it, develop for it, give it to your friends and write GOOD
  119. articles about it in magazines. It will NOT explode after 30 days leaving
  120. a nasty mess on your hard disk, however you are limited to a maximum of
  121. 1000 polygons. If you would like an unresricted version, this is available
  122. from the author for a small fee of 20 quid (which includes posting fee and
  123. cost of disks if neccessary). If you are interested in developing tools,
  124. Geometry engines or applications, please read the developers note at the
  125. bottom of this document.
  126.  
  127. Now follow the user guide...
  128.  
  129. THE USER GUIDE
  130.  
  131. When the editor starts you will see the main editor window and in it a couple
  132. of view windows, a tool bar at the top, a status bar at the bottom, and a
  133. control bar on the right hand side. At the top of the control bar you will see
  134. the 'toolbox'. Each icon in here is actually a button which invokes one of the
  135. tools.
  136.  
  137. At this point it is quite likely that you have already been messing around with
  138. the program for about 10 minutes and have got yourself confused, or the program
  139. confused and have then resorted back to the documentation. (I often do this
  140. too).
  141.  
  142. Before I go on let me remind you that Genesis is a version 1 beta, so it
  143. is incomplete and yes, it has bugs! You might find that some very basic
  144. operations are still not supported, I am not yet too worried about this as
  145. generally this is just a matter of writing the tools for the job. At present
  146. I am more concerned with getting the API's and supporting framework finished
  147. and tested.
  148.  
  149. OK, enough excuses, lets continue with the user documentation;
  150.  
  151. The two views represent two 'scenes'. A bit like two documents in a
  152. word processor. One view has a default object in it (just so you can mess
  153. around rendering stuff). The other has nothing in it and can be used to
  154. experiment with the tools. Click in the view called start.gen to make it
  155. active (start.gen is the name of the model file loaded from the \bin
  156. directory). Start.gen is a model of an everday goblet with a silvery brick
  157. texture on it containing a gold sphere, the sort of thing commonly found in
  158. glass cabinets! Actually its really just to show off the surface types.
  159.  
  160. THE VIEW
  161.  
  162. The view is a window into a scene. There can be more than one view per scene.
  163. Select the Window/New Window menu item for another view into the active scene.
  164. In the view you will see the x, y and z axis drawn, along with a grid in the
  165. zx plane. The grid can be changed or switched off from the control panel. The
  166. entire overlay can be switched off using the View/No overlay menu item. The
  167. grid can also be switched to solid lines or points from the View menu (points
  168. take longer to draw).
  169.  
  170. Sort of bug: Changing the size of the view window causes a re-render with a
  171.              different aspect ratio. This will soon change so you cant easily
  172.              make your view all squashed up.
  173.  
  174. THE 3D CURSOR
  175.  
  176. If you hold the left mouse button down in the view and move the mouse the
  177. mouse cursor disappears and you find that you can move a 3D cursor around in
  178. the view. If you move left to right or vice versa then the cursor moves in the
  179. most horizontal axis in the view. If its moved up/down then the 3D cursor
  180. moves in the most vertical axis. Unless you change the view orientation this
  181. will be the x and y axis. To move in z hold down the right button and move up
  182. and down.
  183.  
  184. Bug: Sometimes from some views the cursor moves in the opposite direction you
  185.      expect. All adds to the fun!
  186.  
  187. CHANGING VIEWPOINT
  188.  
  189. To change the direction in which you are looking into the scene position the
  190. cursor and press the DIR. button on the control panel. The next time a render
  191. is done you will look towards the new position. To render press the cube shaped
  192. button on the tool bar below the menu bar (not the toolbox!). Alternatively
  193. the File/Render menu item can be used. To change the position you are looking
  194. from, position the cursor and press the POS. buttton. The In and Out buttons on
  195. the control bar can be used to zoom in and out (all quite intuitive really),
  196. and the Back button can be used to step back through all the previous views
  197. rendered. So if you screw up and find yourself staring into blank space, just
  198. press Back.
  199.  
  200. The Up button changes the up direction in the rendered image.
  201.  
  202. SURFACE DIALOG
  203.  
  204. To edit the surface type of the goblet select the Scene/Surfaces menu item.
  205. The dialog shows the properties of the currently defined surfaces. To change
  206. the brick texture to a more natural looking concrete, click on the preview
  207. picture of the brick surface, then on the filename Browse button and select
  208. the conctex.bmp. When the image is rendered it will have the new texure. The
  209. preview is a model which is rendered in real-time. You can change the type of
  210. the preview model from the dialog.
  211.  
  212. Other options allow you to change wether or not the texture is infinetly tiled,
  213. and the type of specular reflections the surface generates. The 'dull' spec
  214. reflection actually produces no highlights. Silver produces large bright
  215. highlights, Gold produces large dull highlights. Glass gives you very small
  216. highlights just around the edges of your object. Linear and Constant are also
  217. implemented but the rest just do the same as glass. Notice that selecting these
  218. options does not change the colour of your object - just the highlights. To
  219. change the colour switch off texturing for this surface and press the colour
  220. button.
  221.  
  222. Any windows bitmap file can be used to make a new texture. See the coordinate
  223. system editor section on how to specify the orientation of the texture.
  224.  
  225. Bug: I lied, currently only 8 bit (256 col.) and 24 bit bitmaps work!
  226.  
  227. The 'more' button is used to define recursive textures and bump mapping,
  228. neither of which the default Geometry engine support, so messing around with
  229. these options will have no effect.
  230.  
  231. TOOLS
  232.  
  233. Sphere tool
  234.  
  235. Now go to the blank view. To invoke a tool, say the sphere, click on its
  236. button in the toolbox (second one in). The Tool/Configure menu item can now
  237. be used to configure the sphere tool. Use this to change to a smooth sphere
  238. and OK the dialog. Position the cursor for the center of the sphere and press
  239. the 'Set' button on the control panel. Then move the cursor to a point on the
  240. radius and press the 'Do' button. The surface is coloured with the currently
  241. selected surface type from the surface dialog box (the one you clicked in last).
  242.  
  243. A new object called 'sphere' will appear in the object listbox. If you create
  244. a second sphere object it will be called 'sphere2'. This applies to all tools
  245. that create objects.
  246.  
  247. The 'Mapped texture' checkbox in the sphere config dialog will be used for
  248. warping a texture into a spherical map so that the image doesn't distort across
  249. the surface of the sphere. If you think I'm talking cac please ignore the last
  250. sentance.
  251.  
  252. All tools that create primitive objects or bits of objects use the currently
  253. selected surface type. The grand list currently consists of; Patch, Sphere
  254. and Spin tools (the first, second and seventh respectively in the toolbox).
  255.  
  256. Bug: You can change the 'Number of verticies' field in the configuration
  257.      of the sphere but some values will cause the code to crash. The number
  258.      is only an approximate indication anyway
  259.  
  260. Patch tool
  261.  
  262. The most basic of all tools, enables you to create a patch or polygon by
  263. positioning the cursor and pressing 'Set' for as many verticies as are needed.
  264. The patch tool is the first one in the box by the way (if theres one thing I
  265. learnt its that doing 3D icons is harder than 2D ones). Use 'Do' to create
  266. the patch. All points must lie on a plane but you are not limited to how many
  267. points you create. You can define a 1,000 point concave outline and as long
  268. as all the points lie on a plane then Genesis will split it up into lots of
  269. small patches (of up to 4 verticies each). Each patch has a solid and an empty
  270. side. The patch must always be seen from the solid side as it will actually
  271. become invisible if seen from the wrong side. You implicitly define which
  272. side is solid by ALWAYS drawing the verticies CLOCKWISE as seen from the
  273. outside.
  274.  
  275. You must also select which object in your scene you want the patch
  276. to belong to. Do this by highlighting the 'start' object name in the rightmost
  277. listbox on the control panel. The 'start' object is initially empty.
  278.  
  279. Was that a bit un-intuitive? If it was then you will find yourself very
  280. rarely actually using this tool as other more powerfull ones actually build
  281. whole objects for you.
  282.  
  283. Spin tool
  284.  
  285. This allows you to define an outline which is spun around an axis to form a
  286. cylindrical type formation. The goblet was done using this technique. Select
  287. the tool (7th one in toolbox). Position the cursor at a point at the start of
  288. the axis you want to spin in and press 'Set'. Then position the cursor at the
  289. end of the spin axis and press 'Set' again. You will then be presented with
  290. an outline editor. The vertical axis of the editor is the line you have just
  291. drawn in 3D. Each press of the mouse button in the editor defines a new
  292. segment to be added to the outline.
  293.  
  294. If you want to create a disconnected part of the outline use the 'move'
  295. button. If you want to create an arc, circle or box as part of the outline,
  296. press 'move' and position the 2D outline cursor at the center of the
  297. arc/circle or corner of the box. Then position the cursor at a point on the
  298. radius or the other corner and press the appropriate button at the bottom
  299. of the editor. When you OK the dialog a wireframe is drawn in the view, if
  300. you're happy with it press 'Do', otherwise you can reposition the end of the
  301. spin axis and press 'Set' again to get the outline editor back.
  302.  
  303. IMPORTANT NOTE: Consider this. In the outline editor you define a line segment
  304.         coming out from the bottom of the vetical axis and extending
  305.         right. Then another segment goes straight up. Now given that
  306.         patches have a solid and an empty side, have you defined a
  307.         sort of cylinder (solid on the inside, where the spin axis is)
  308.         or a sort of cylindrical hole which is solid on the outside
  309.         (and empty space where the axis is). The answer is you have
  310.         defined a solid cylinder because the outline is always solid
  311.         on the left hand side as you draw it. If you 'moved' to the
  312.         end of the cylinder first and then drew down to the axis
  313.         origin, then would would have defined a cylindrical hole!
  314.         When defining arcs and circles a negative arc angle makes
  315.         the outline proceed clockwise instead of anticlockwise
  316.         (ie. giving hole type outlines instead of solid ones).
  317.  
  318. The Spin tool has a configuration dialog box which is accessed the same as
  319. for the sphere.
  320.  
  321. Diff, Union an Int tools
  322.  
  323. These tools are more complex than the others, (and took longer to write).
  324. Having created two objects such as a sphere and a spin object you will notice
  325. that their names appear in the right hand list box on the control panel.
  326. If these two objects overlap in space then using these tools you can perform
  327. a CSG (constructive solid geometry) (sometimes called boolean) operation on
  328. the objects. The diff tool (3rd one in) subtracts one object from another.
  329. Highlight the names of the two objects in the listbox, select the tool, and
  330. press 'Do'. Indicate on the dialog which object is subtracted from which, and
  331. thats all! When the operation is complete the all views into the scene are
  332. re-rendered. The union tool joins two objects together such that the patches
  333. form a continuous mesh across the surface. The intersection tool takes only
  334. the overlapping part of the two objects. After the operation only one object
  335. will be listed in the object listbox with a name like 'diff object', 'union
  336. object' or 'int object'.
  337.  
  338. The configuration dialog boxes for these tools allow you to specify how the
  339. smoothing is to be performed if a curved patch from one object joins a curved
  340. patch from the other in the resulting object.
  341.  
  342. Enclosed tool
  343.  
  344. I said earlier that all patches have a solid and an empty side, and that if
  345. you view it from the wrong side it will become invisible. This is OK because
  346. each object should be a continous polygon mesh surface, in other words each
  347. edge of each patch should be connected to another patch thereby preventing
  348. you seeing the wrong side of any particular patch. Unless of course you intend
  349. to view the object from the inside in which case you should design its inside
  350. as another continuous polygon mesh belonging to the same object!
  351.  
  352. If an object isn't a continous mesh nothing will go wrong, its just it might
  353. look like you have holes in it when seen from certain angles (ie. when
  354. looking at the inside of patches). What is more the CSG tools will warn
  355. you if either object is not completely enclosed as sometimes the results
  356. you get from un-enclosed objects might not be what you expected.
  357.  
  358. So to cut through the waffle, the enclosed tool highlights any unconnected
  359. edges in all objects in your scene. When developing tools this can also act as
  360. a debugger to check your tool is giving sensible results. To try it out
  361. simply create a patch and select the enclosed tool (6th one in toolbox).
  362.  
  363. It has no configuration dialog.
  364.  
  365. Bug: Very occasionally the CSG tools will generate an object with unconnected
  366.      edges.
  367.  
  368. Coordinate system editor
  369.  
  370. The coordinate system editor (8th tool) is a very powerfull tool. It doesn't
  371. work on objects themselves but on the coordinate systems they belong too.
  372. So far both of the scenes you have been experimenting with have each had a
  373. single coordinate system. The left hand listbox of the control panel contains
  374. a list of the coordinate systems belonging to the active scene.
  375.  
  376. OK, let me start by posing some problems, then maybe the significance of
  377. coordinate systems will become more obvious;
  378.  
  379.       Prob 1. You have designed a large cube with one corner at the origin.
  380.               You now want add a load of primitives (spheres, blocks etc.)
  381.               such that they appear to be sitting on one of the faces of the
  382.               cube. However the face you have chosen is the back vertical
  383.               face! Even if you re-position the viewpoint so you can see what
  384.               you are doing you are used to working on a flat horizontal
  385.               surface not a vertical one and have trouble adjusting. Worst
  386.               still suppose the face isn't exactly aligned with one of the
  387.               axis, you will have terrible trouble knowing wether your new
  388.               primitives are actually sitting on the surface, penetrating
  389.               it, or sitting too high above it. also some primitive creation
  390.               tools might only create primitives algined with the axis.
  391.  
  392.       Prob 2. When defining a texture, the bitmap you use is placed in the
  393.               xy plane of the coordinate system. If your bitmap is 100 pixels
  394.               wide by 80 high then the extent of the texture will be from the
  395.               origin to x=100 and y=80 (if not tiled) and will be projected
  396.               through the z. Suppose you want the texture scaled to x=1000
  397.               to y=800 or projected down through the zx plane.
  398.  
  399.       Prob 3. You are using an animation tool. You have a landscape and within
  400.               it a river. On the river is two boats; A and B. Boat A has 10
  401.               people on it. When the boat moves relative to the landscape all
  402.               the people on the boat must also move (otherwise they will end
  403.               up suspended above the river!), BUT the people must still be
  404.               able to move about on the boat. Boat B obviously moves
  405.               indepentently of boat A. You need a way of telling the editor
  406.               that the people objects of Boat A must move when the Boat A
  407.               object moves and likewise for Boat B.
  408.  
  409. The answer to all these problems is coordinate systems. The coordinate system
  410. editor tool enables you to define a new coordinate system relative to the
  411. currently active one (which is called 'top level' unless you've already
  412. created some). The new coordinate becomes a 'child' of the active one and the
  413. three buttons at the bottom of the coor sys editor dialog allow you to
  414. reposition and scale it relative to its parent. When you create a new coordinate
  415. system (using the 'New' button) a new view is automatically created for you.
  416.  
  417. To modify a coordinate system relative to its parent, first make it active
  418. (by clicking in its view, or selecting its name from the coor sys listbox).
  419. Then click the 'Modify' button. The tool then makes its parent's view
  420. active and draws a represention of its axis's within its parent. Then
  421. using the Origin->Cursor button you can move the origin, and using the
  422. Z Axis->Cursor button you can specify a direction towards which the z axis
  423. should point. The third button; Y Dir->Cursor can be used give an aproximate
  424. direction to the Y axis given the constraints of the origin and the z axis.
  425.  
  426. The new view can be used exactly like its parents view but what you have
  427. really done is turned the world on its head so that you can work with a
  428. sensible set of axis, while the rest of the world (ie. everything defined in
  429. the parent coor sys) is at an awkward angle.
  430.  
  431. You can define a coordinate system purely for the purpose of defining a texture
  432. position. The surface type dialog has a combo-box field where you can tell
  433. it the name of the coor sys the texture is defined in. You can then close down
  434. the view if your not going to be working in it (this doesn't delete the coor
  435. sys).
  436.  
  437. In the Prob 3 example boats A and B will each have their own coordinate
  438. system which is a child of 'top level'. The landscape will be defined in
  439. 'top level' by a bunch of patches. The individual people of boat A will each
  440. have their own coordinate system (as they can all move independently of each
  441. other) but they will all be children of the boat A coordinate system (as they
  442. must move if the boat moves). Boat B will likewise have its own coordinate
  443. system as a child of 'top level'.
  444.  
  445. Normal tool
  446.  
  447. The normal tool (last one in the box) draws onto the view the normal (or
  448. arrow perpendicular to the surface) of each every curved patch facing the
  449. view. Since the tools described create the normals for you, you will rarely
  450. need to use this, however eventually this tool will enable you to 'grab' a
  451. normal with the mouse and bend it, thereby changing the shading at that
  452. point on the surface. Even then this tool is really just for perfectionists
  453. who maybe dont like default smoothing effect of some tools.
  454.  
  455. The normal tool will be good for doing things like, putting a dent in the
  456. side of your object, eg. a dented, brick coloured goblet, with a dented gold
  457. globe in it! Obviously there is no limit to your creative potential.
  458.  
  459. ...Watch out for more tools
  460.  
  461. ROYALTIES ON API USEAGE
  462.  
  463. I must apologies to those whom I told the API was free to use in your own
  464. programs. Dont worry just yet - please hear me out. I was strongly advised
  465. for copyright reasons to demand a small royalty fee on use of the API. I
  466. want to keep this as low as possible as I want to encourage people to use
  467. the API. If you want to use the API in an application or tool that will be
  468. sold for profit, then a small royalty fee of 2% of the retail value of the
  469. product will be charged on each unit sold. 1% if any part of the maths,
  470. debug or Helper API's are used without the Geometry API. This note applies
  471. to use of the API's irrespective of wether the libraries themselves are used.
  472.  
  473. DEVELOPERS NOTE
  474.  
  475. I think this is the bit a lot of people have been waiting for. This is the
  476. agreement; This version of Genesis is Freeware. Soon there will be
  477. a commercial release. The more tools and/or Geometry engine's it supports
  478. the better, so if you are interested in developing for it, send me what you
  479. have and if its of general use to others (ie. no spinal column fracture
  480. detectors please) it will be included. This is your chance to get your name
  481. in lights and obviously a royalty payment in your pocket. The initial release
  482. will be under £100 (pounds) unless there is such a wealth of tools that
  483. puts us way above the competition. This would be nice but I'm trying to
  484. be realistic. I will have to work out fairly on an individual basis the
  485. royalty payment based on effort put in and value it adds to the package as
  486. a whole.
  487.  
  488. From the overwhelming response I had to my original append I'm sure this is
  489. going to take off in a big way. I will endevour to set up a Genesis newsgroup
  490. so that developers can talk to each other and help each other with their
  491. problems. This will also serve to ensure that developers aren't writing the
  492. same tools (.DXF loader anyone?).
  493.  
  494. I am of course still working on Genesis and have my own schedule, however if
  495. there are areas you would like completed sooner rather than later in order
  496. to develop tools then feel free to E-mail me a request.
  497.  
  498. Once again, Genesis (particularly the editor and the tool interface) is not
  499. complete by a long way. I am confident that by the time we reach first release
  500. which hopefully will be well within a year, it will be one of if not the most
  501. powerfull PC based 3D graphics development tools available.
  502.